package com.mygdx.game;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.utils.viewport.StretchViewport;

import javax.xml.soap.Text;

/**
 * 开始场景（欢迎界面）, 实现 Screen 接口 或者 继承 ScreenAdapter 类, ScreenAdapter 类空实现了 Screen 接口的所有方法。
 * 这个场景使用 LibGDX 的官方 logo 居中显示 3 秒钟当做是游戏的欢迎界面。
 */
public class StartScreen implements Screen{

    // 为了方便与 MainGame 进行交互, 创建 Screen 时将 MainGame 作为参数传进来
    private MainGame mainGame;

    private Texture logoTexture; //logo图片的纹理

    private Stage stage; //舞台

    private MyActor myActor ; //演员
    // 渲染时间步累计变量（当前场景被展示的时间总和）
    private float deltaSum;

    public StartScreen(MainGame mainGame) {
        this.mainGame = mainGame;
        // 在 Screen 中没有 create() 方法, show() 方法有可能被调用多次, 所有一般在构造方法中做一些初始化操作较好
        logoTexture = new Texture(Gdx.files.internal("logo.png"));

        stage = new Stage(new StretchViewport(MainGame.WORLD_WIDTH,MainGame.WORLD_HEIGHT));

        myActor = new MyActor(new TextureRegion(logoTexture));
        stage.addActor(myActor);

    }

    @Override
    public void show() {
        deltaSum = 0;
    }

    @Override
    public void render(float delta) {
        Gdx.app.error("tag","StartScreen - render-deltal:"+delta);
        deltaSum += delta;
        // 开始场景展示时间超过 3 秒, 通知 MainGame 切换场景（启动主游戏界面）
        if (deltaSum>=3)
        {
            if (mainGame!=null)
            {
                mainGame.showGameScreen();
                return;
            }
        }
        // 使用淡蓝色清屏
        Gdx.gl.glClearColor(0.75F, 1, 0.98F, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        //更新舞台逻辑
        stage.act();

        //绘制舞台
        stage.draw();

    }

    @Override
    public void resize(int width, int height) {

    }

    @Override
    public void pause() {

    }

    @Override
    public void resume() {

    }

    @Override
    public void hide() {

    }

    @Override
    public void dispose() {
        if (stage!=null)
        {
            stage.dispose();
        }
        if (logoTexture!=null)
        {
            logoTexture.dispose();
        }
    }
}
